# Presented By ZhaoEnxing
# time: 2021/10/24 21:00
# 某糖果生产基地,生产的标准是每袋糖果的净重为500(克)。今从一批压产中抽出10袋,实际测得每袋糖果的净重(克)为:
# 512 503 498 507 496 489 499 501 496 506
# 给定显著性水平α=0.01,试问该批的生产是否正常?假设糖果重量服从正态分布。
import numpy as np
from scipy import stats
import pandas as pd

# 导入数据这里我简化了
candy_sample = pd.Series([512, 503, 498, 507, 496, 489, 499, 501, 496, 506])

# 已知条件
confidence = 0.01
test_mean = 500
# 方法一 比较p值和置信度
result = stats.ttest_1samp(candy_sample, popmean=test_mean)
print('检验样本统计量t为', result[0])
print('p值为', result[1])
# 方法二 计算t再计算临界值判断
result = stats.ttest_1samp(candy_sample, popmean=test_mean)

# t分布临界值
limit = stats.t.ppf(confidence / 2, df=candy_sample.size - 1)

print('检验样本统计量t为', result[0])
print('t临界值为（双侧检验）', limit, '和', -limit)
# 方法三 使用公式计算t统计量，比较临界值
t = (candy_sample.mean() - test_mean) / (candy_sample.std() / np.sqrt(candy_sample.size))
limit = stats.t.ppf(confidence / 2, df=candy_sample.size - 1)

print('t统计量为', t)
print('t临界值为（双侧检验）', limit, '和', -limit)